package com.demo.java.OD101_150.OD142;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【篮球比赛】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145733259
 */
public class OdMain {
    public static void main(String[] args) {
        // 创建Scanner对象来读取输入
        Scanner sc = new Scanner(System.in);

        // 读取输入的一行字符串并按空格分割，形成字符串数组
        String[] strings = sc.nextLine().split(" ");

        // 获取数组长度
        int len = strings.length;

        // 创建一个整型数组来存储输入的整数
        int[] ints = new int[len];

        // 变量count用于保存所有输入整数的总和
        int count = 0;

        // 将字符串数组转换为整数并计算总和
        for (int i = 0; i < len; i++) {
            int temp = Integer.valueOf(strings[i]);
            ints[i] = temp;
            count += temp; // 计算数组元素的总和
        }

        // 创建一个List来存储所有可能的五个数和
        List<Integer> nums = new ArrayList<>();

        // 如果输入的整数数组长度大于或等于5，开始计算所有可能的五个数的组合
        if (ints.length >= 5) {
            // 五重循环，遍历数组中所有可能的五个数的组合
            for (int i = 0; i < ints.length - 4; i++) {
                for (int j = i + 1; j < ints.length - 3; j++) {
                    for (int k = j + 1; k < ints.length - 2; k++) {
                        for (int l = k + 1; l < ints.length - 1; l++) {
                            for (int m = l + 1; m < ints.length; m++) {
                                // 将每个组合的五个数的和存入nums列表
                                nums.add(ints[i] + ints[j] + ints[k] + ints[l] + ints[m]);
                            }
                        }
                    }
                }
            }
        }

        // 设置最小差值初始为最大整数
        int min = Integer.MAX_VALUE;

        // 遍历所有可能的五个数和，找出最接近总和的差值
        for (int i = 0; i < nums.size(); i++) {
            // 比较当前和与总和的差值，取最小的差值
            min = Math.min(Math.abs(count - nums.get(i) * 2), min);
        }

        // 输出最小差值
        System.out.println(min);
    }
}